package com.wang.jmonkey.modules.system.api;

import com.wang.jmonkey.common.annotation.Log;
import com.wang.jmonkey.common.result.HttpResult;
import com.wang.jmonkey.modules.system.model.dto.SystemDutyTreeDto;
import com.wang.jmonkey.modules.system.model.entity.SystemDutyEntity;
import com.wang.jmonkey.modules.system.service.SystemDutyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 职务信息(SystemDuty)表控制层
 *
 * @author HeJiawang
 * @since 2021-07-24 15:42:39
 */
@RestController
@RequestMapping("/duty")
public class SystemDutyApi {

    /**
     * 服务对象
     */
    @Autowired
    private SystemDutyService service;

    /**
     * 新增职务信息
     * @param duty 职务信息
     * @return true 新增成功
     */
    @Log("职务管理——新增职务信息")
    @PostMapping(value = "/save")
    public HttpResult<Void> save(@RequestBody @Validated SystemDutyEntity duty) {
        return new HttpResult<Void>().setSuccess(service.save(duty));
    }

    /**
     * 修改职务信息
     * @param duty 职务信息
     * @return true 修改成功
     */
    @Log("职务管理——修改职务信息")
    @PutMapping(value = "/update")
    public HttpResult<Void> update(@RequestBody @Validated SystemDutyEntity duty) {
        return new HttpResult<Void>().setSuccess(service.updateById(duty));
    }

    /**
     * 删除职务信息
     * @param id 职务信息id
     * @return true 删除成功
     */
    @Log("职务管理——删除职务信息")
    @DeleteMapping(value = "/remove/{id}")
    public HttpResult<Void> remove(@PathVariable Long id) {
        return new HttpResult<Void>().setSuccess(service.removeById(id));
    }

    /**
     * 获取树形结构数据
     * @return 树形结构数据集合
     */
    @Log("职务管理——查看职务列表")
    @GetMapping(value = "/listTree")
    public HttpResult<List<SystemDutyTreeDto>> listTree() {
        return new HttpResult<>(service.listTree());
    }

}
